package edu.guigu.appquickstart.utils;

import android.content.Context;

import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;

/**
 * 内部存储文件操作工具类
 * @author yuanc
 * @Description: (用一句话描述)
 * @date 2025/8/12 10:21
 */
public class FileUtils {

    private FileUtils(){}
    /**
     * 检查文件是否存在
     * @param context 上下文对象
     * @param fileName 文件名（不需要路径）
     * @return 文件是否存在
     */
    public static boolean fileExists(Context context, String fileName) {
        File file = new File(context.getFilesDir(), fileName);
        return file.exists();
    }
    /**
     * 保存数据到文件
     * @param context 上下文对象
     * @param fileName 文件名（不需要路径）
     * @param data 要保存的数据字符串
     * @return 是否保存成功
     */
    public static boolean saveData(Context context, String fileName, String data) {
        File file = new File(context.getFilesDir(), fileName);
        try (BufferedWriter writer = new BufferedWriter(new FileWriter(file))) {
            writer.write(data);
            return true;
        } catch (IOException e) {
            e.printStackTrace();
            return false;
        }
    }

    /**
     * 从文件读取数据
     * @param context 上下文对象
     * @param fileName 文件名（不需要路径）
     * @return 文件内容字符串，读取失败返回null
     */
    public static String readData(Context context, String fileName) {
        File file = new File(context.getFilesDir(), fileName);
        if (!file.exists()) return null;

        StringBuilder stringBuilder = new StringBuilder();
        try (BufferedReader reader = new BufferedReader(new FileReader(file))) {
            String line;
            while ((line = reader.readLine()) != null) {
                stringBuilder.append(line).append("\n");
            }
            // 删除最后一个多余的换行符
            if (stringBuilder.length() > 0) {
                stringBuilder.deleteCharAt(stringBuilder.length() - 1);
            }
            return stringBuilder.toString();
        } catch (IOException e) {
            e.printStackTrace();
            return null;
        }
    }

    /**
     * 删除文件
     * @param context 上下文对象
     * @param fileName 文件名（不需要路径）
     * @return 是否删除成功（文件不存在也返回true）
     */
    public static boolean deleteFile(Context context, String fileName) {
        File file = new File(context.getFilesDir(), fileName);
        if (file.exists()) {
            return file.delete();
        }
        return true;
    }
}
